package com.project.service;

import com.project.domain.dto.projectApplyDto.*;
import com.project.domain.dto.projectCheckDto.SearchExcelReqDto;
import com.project.domain.dto.projectReviewDto.LixiangReqDto;
import com.project.domain.entity.BizProjectApplyInfo;
import com.project.domain.vo.BizProjectAppBookBudgetFeeSaveVo;
import com.project.domain.vo.BizProjectApplyBookVo;
import com.project.domain.vo.BizProjectApplyInfoVo;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

public interface IProjectApplyService {
    Object test();

    List<HashMap<String,Object>> list(BizProjectApplyInfoVo bizProjectApplyInfo);

    List<HashMap<String, Integer>> listStatistics(BizProjectApplyInfoVo bizProjectApplyInfoVo);

    void add(BizProjectApplyInfo bizProjectApplyInfo);

    void edit(BizProjectApplyInfo bizProjectApplyInfo);

    void delete(List<String> ids);

    void changeState(BizProjectApplyInfo bizProjectApplyInfo);

    void materialsAdd(BizProjectApplyBookVo bizProjectApplyBookVo);

    HashMap<String,Object> materialsGetInfo(BizProjectApplyBookVo bizProjectApplyBookVo);

    HashMap<String,Object> getBookByBooId(BizProjectApplyBookVo bizProjectApplyBookVo);

    String materialsSaveInfo(BizProjectApplyBookVo bizProjectApplyBookVo);

    /**
     * 通过APPLY_BOOK_ID在biz_project_apply_book_member查询人员
     * @param bizProjectApplyBookVo id值
     * @return x
     */
    List<HashMap<String,Object>> materialsGetMember(BizProjectApplyBookVo bizProjectApplyBookVo);


    void materialsSaveMember(BizProjectApplyBookVo bizProjectApplyBookVo);


    BizProjectApplyBookVo getApplyBookByBookId(BizProjectApplyBookVo bizProjectApplyBookVo);

    List<HashMap<String,Object>> getBudget(String projectTypeCode, String projectStartDate, String applyBookId);

    List<HashMap<String,Object>> getBudgetV2(String applyBookId);

    void saveBudget(BizProjectAppBookBudgetFeeSaveVo bizProjectApplyBookVo);

    /**
     * ChangeBookStateDto。stateCode ：
     * -1 暂存
     * 
     * @param args
     * @return
     */
    @Deprecated
    int changeBookState(ChangeBookStateDto args);

    ApplyInfoViewResDto getApplyInfoById(String id);

    ArrayList<HashMap<String, String>> getFileInfoByFileIds(String[] fileIds);

    /**
     * 通过book_id删除与之相关的所有数据
     * 主表 biz_project_apply_book
     * 从表1 成员 biz_project_apply_book_member
     * 从表2 预算 biz_project_appbook_budget_fee
     * @param ids bookId列表
     */
    void deleteBook(List<String> ids);

    int lixiang(LixiangReqDto dto);

    ArrayList<ApplyHistoryResDto> applyHistory(ApplyHistoryReqDto dto);

    ArrayList<IJoinResDto> i_join(IJoinReqDto dto);

    ArrayList<ExportHistoryApplyBookMybatisDto> exportHistoryApplyExcel(ApplyHistoryExcelReqDto dto);

    ArrayList<ExportApplyBookMybatisDto> exportBookExcel(SearchExcelReqDto dto);

    int bookSubmit(BookSubmitDto dto);
}
